package com.allen.study.infrastructure.persistence.assembler;

import com.allen.study.application.api.response.EmployeeInfoQueryResponse;
import com.allen.study.domain.entity.EmployeeInfo;
import com.allen.study.infrastructure.persistence.assembler.mapper.IEmployeeInfoPOStructMapper;
import com.allen.study.infrastructure.persistence.po.EmployeeInfoPO;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 用户信息表类型转换
 *
 * @author AllenSun
 * @since 2025-04-23 20:46
 */
@Component
public class EmployeeInfoPOAssembler {

    /**
     * 用户信息表持久化对象装配
     *
     * @param employeeInfo 用户信息表实体
     * @return 用户信息表持久化对象
     */
    public EmployeeInfoPO assembler(EmployeeInfo employeeInfo) {
        return IEmployeeInfoPOStructMapper.INSTANCE.fromEntity(employeeInfo);
    }

    /**
     * 用户信息表持久化对象装配
     *
     * @param employeeInfoList 用户信息表实体
     * @return 用户信息表持久化对象
     */
    public List<EmployeeInfoPO> assembler(List<EmployeeInfo> employeeInfoList) {
        return IEmployeeInfoPOStructMapper.INSTANCE.fromEntity(employeeInfoList);
    }

    /**
     * 用户信息表持久化对象 转 用户信息表实体
     *
     * @param employeeInfoPO 用户信息表持久化对象
     * @return 用户信息表实体
     */
    public EmployeeInfo toEntity(EmployeeInfoPO employeeInfoPO) {
        return IEmployeeInfoPOStructMapper.INSTANCE.toEntity(employeeInfoPO);
    }

    /**
     * 用户信息表持久化对象列表  转 用户信息表实体列表
     *
     * @param employeeInfoPOList 用户信息表持久化对象
     * @return 用户信息表实体
     */
    public List<EmployeeInfo> toEntity(List<EmployeeInfoPO> employeeInfoPOList) {
        return IEmployeeInfoPOStructMapper.INSTANCE.toEntity(employeeInfoPOList);
    }

    /**
     * 用户信息表持久化对象 转 用户信息表查询响应数据传输对象
     *
     * @param employeeInfoPO 用户信息表持久化对象
     * @return 用户信息表查询响应数据传输对象
     */
    public EmployeeInfoQueryResponse toQueryResponse(EmployeeInfoPO employeeInfoPO) {
        return IEmployeeInfoPOStructMapper.INSTANCE.toQueryResponse(employeeInfoPO);
    }

    /**
     * 用户信息表持久化对象列表 转 用户信息表查询响应数据传输对象列表
     *
     * @param employeeInfoPOList 用户信息表持久化对象列表
     * @return 用户信息表查询响应数据传输对象列表
     */
    public List<EmployeeInfoQueryResponse> toQueryResponse(List<EmployeeInfoPO> employeeInfoPOList) {
        return IEmployeeInfoPOStructMapper.INSTANCE.toQueryResponse(employeeInfoPOList);
    }
}
